/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.controler;

import com.camachosanchez.bean.Alineaciones;
import com.camachosanchez.bean.ControlCambioNeumatico;
import com.camachosanchez.bean.Despinches;
import com.camachosanchez.bean.InspeccionEquipo;
import com.camachosanchez.bean.Pilotos;
import com.camachosanchez.bean.Usuarios;
import com.camachosanchez.controler.exceptions.IllegalOrphanException;
import com.camachosanchez.controler.exceptions.NonexistentEntityException;
import com.camachosanchez.util.JPAUtil;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityNotFoundException;
import javax.persistence.Query;

/**
 *
 * @author ZULLY
 */
public class PilotosJpaController implements Serializable {

    public PilotosJpaController(EntityManagerFactory emf) {
        this.emf = JPAUtil.getEntityManagerFactory();
    }
    private EntityManagerFactory emf = null;

    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void create(Pilotos pilotos) {
        if (pilotos.getInspeccionEquipoList() == null) {
            pilotos.setInspeccionEquipoList(new ArrayList<InspeccionEquipo>());
        }
        if (pilotos.getInspeccionEquipoList1() == null) {
            pilotos.setInspeccionEquipoList1(new ArrayList<InspeccionEquipo>());
        }
        if (pilotos.getAlineacionesList() == null) {
            pilotos.setAlineacionesList(new ArrayList<Alineaciones>());
        }
        if (pilotos.getControlCambioNeumaticoList() == null) {
            pilotos.setControlCambioNeumaticoList(new ArrayList<ControlCambioNeumatico>());
        }
        if (pilotos.getDespinchesList() == null) {
            pilotos.setDespinchesList(new ArrayList<Despinches>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Usuarios idUsuario = pilotos.getIdUsuario();
            if (idUsuario != null) {
                idUsuario = em.getReference(idUsuario.getClass(), idUsuario.getId());
                pilotos.setIdUsuario(idUsuario);
            }
            List<InspeccionEquipo> attachedInspeccionEquipoList = new ArrayList<InspeccionEquipo>();
            for (InspeccionEquipo inspeccionEquipoListInspeccionEquipoToAttach : pilotos.getInspeccionEquipoList()) {
                inspeccionEquipoListInspeccionEquipoToAttach = em.getReference(inspeccionEquipoListInspeccionEquipoToAttach.getClass(), inspeccionEquipoListInspeccionEquipoToAttach.getId());
                attachedInspeccionEquipoList.add(inspeccionEquipoListInspeccionEquipoToAttach);
            }
            pilotos.setInspeccionEquipoList(attachedInspeccionEquipoList);
            List<InspeccionEquipo> attachedInspeccionEquipoList1 = new ArrayList<InspeccionEquipo>();
            for (InspeccionEquipo inspeccionEquipoList1InspeccionEquipoToAttach : pilotos.getInspeccionEquipoList1()) {
                inspeccionEquipoList1InspeccionEquipoToAttach = em.getReference(inspeccionEquipoList1InspeccionEquipoToAttach.getClass(), inspeccionEquipoList1InspeccionEquipoToAttach.getId());
                attachedInspeccionEquipoList1.add(inspeccionEquipoList1InspeccionEquipoToAttach);
            }
            pilotos.setInspeccionEquipoList1(attachedInspeccionEquipoList1);
            List<Alineaciones> attachedAlineacionesList = new ArrayList<Alineaciones>();
            for (Alineaciones alineacionesListAlineacionesToAttach : pilotos.getAlineacionesList()) {
                alineacionesListAlineacionesToAttach = em.getReference(alineacionesListAlineacionesToAttach.getClass(), alineacionesListAlineacionesToAttach.getId());
                attachedAlineacionesList.add(alineacionesListAlineacionesToAttach);
            }
            pilotos.setAlineacionesList(attachedAlineacionesList);
            List<ControlCambioNeumatico> attachedControlCambioNeumaticoList = new ArrayList<ControlCambioNeumatico>();
            for (ControlCambioNeumatico controlCambioNeumaticoListControlCambioNeumaticoToAttach : pilotos.getControlCambioNeumaticoList()) {
                controlCambioNeumaticoListControlCambioNeumaticoToAttach = em.getReference(controlCambioNeumaticoListControlCambioNeumaticoToAttach.getClass(), controlCambioNeumaticoListControlCambioNeumaticoToAttach.getId());
                attachedControlCambioNeumaticoList.add(controlCambioNeumaticoListControlCambioNeumaticoToAttach);
            }
            pilotos.setControlCambioNeumaticoList(attachedControlCambioNeumaticoList);
            List<Despinches> attachedDespinchesList = new ArrayList<Despinches>();
            for (Despinches despinchesListDespinchesToAttach : pilotos.getDespinchesList()) {
                despinchesListDespinchesToAttach = em.getReference(despinchesListDespinchesToAttach.getClass(), despinchesListDespinchesToAttach.getId());
                attachedDespinchesList.add(despinchesListDespinchesToAttach);
            }
            pilotos.setDespinchesList(attachedDespinchesList);
            em.persist(pilotos);
            if (idUsuario != null) {
                idUsuario.getPilotosList().add(pilotos);
                idUsuario = em.merge(idUsuario);
            }
            for (InspeccionEquipo inspeccionEquipoListInspeccionEquipo : pilotos.getInspeccionEquipoList()) {
                Pilotos oldIdPilotoSalidaOfInspeccionEquipoListInspeccionEquipo = inspeccionEquipoListInspeccionEquipo.getIdPilotoSalida();
                inspeccionEquipoListInspeccionEquipo.setIdPilotoSalida(pilotos);
                inspeccionEquipoListInspeccionEquipo = em.merge(inspeccionEquipoListInspeccionEquipo);
                if (oldIdPilotoSalidaOfInspeccionEquipoListInspeccionEquipo != null) {
                    oldIdPilotoSalidaOfInspeccionEquipoListInspeccionEquipo.getInspeccionEquipoList().remove(inspeccionEquipoListInspeccionEquipo);
                    oldIdPilotoSalidaOfInspeccionEquipoListInspeccionEquipo = em.merge(oldIdPilotoSalidaOfInspeccionEquipoListInspeccionEquipo);
                }
            }
            for (InspeccionEquipo inspeccionEquipoList1InspeccionEquipo : pilotos.getInspeccionEquipoList1()) {
                Pilotos oldIdPilotoEntradaOfInspeccionEquipoList1InspeccionEquipo = inspeccionEquipoList1InspeccionEquipo.getIdPilotoEntrada();
                inspeccionEquipoList1InspeccionEquipo.setIdPilotoEntrada(pilotos);
                inspeccionEquipoList1InspeccionEquipo = em.merge(inspeccionEquipoList1InspeccionEquipo);
                if (oldIdPilotoEntradaOfInspeccionEquipoList1InspeccionEquipo != null) {
                    oldIdPilotoEntradaOfInspeccionEquipoList1InspeccionEquipo.getInspeccionEquipoList1().remove(inspeccionEquipoList1InspeccionEquipo);
                    oldIdPilotoEntradaOfInspeccionEquipoList1InspeccionEquipo = em.merge(oldIdPilotoEntradaOfInspeccionEquipoList1InspeccionEquipo);
                }
            }
            for (Alineaciones alineacionesListAlineaciones : pilotos.getAlineacionesList()) {
                Pilotos oldIdPilotosOfAlineacionesListAlineaciones = alineacionesListAlineaciones.getIdPilotos();
                alineacionesListAlineaciones.setIdPilotos(pilotos);
                alineacionesListAlineaciones = em.merge(alineacionesListAlineaciones);
                if (oldIdPilotosOfAlineacionesListAlineaciones != null) {
                    oldIdPilotosOfAlineacionesListAlineaciones.getAlineacionesList().remove(alineacionesListAlineaciones);
                    oldIdPilotosOfAlineacionesListAlineaciones = em.merge(oldIdPilotosOfAlineacionesListAlineaciones);
                }
            }
            for (ControlCambioNeumatico controlCambioNeumaticoListControlCambioNeumatico : pilotos.getControlCambioNeumaticoList()) {
                Pilotos oldIdPilotoOfControlCambioNeumaticoListControlCambioNeumatico = controlCambioNeumaticoListControlCambioNeumatico.getIdPiloto();
                controlCambioNeumaticoListControlCambioNeumatico.setIdPiloto(pilotos);
                controlCambioNeumaticoListControlCambioNeumatico = em.merge(controlCambioNeumaticoListControlCambioNeumatico);
                if (oldIdPilotoOfControlCambioNeumaticoListControlCambioNeumatico != null) {
                    oldIdPilotoOfControlCambioNeumaticoListControlCambioNeumatico.getControlCambioNeumaticoList().remove(controlCambioNeumaticoListControlCambioNeumatico);
                    oldIdPilotoOfControlCambioNeumaticoListControlCambioNeumatico = em.merge(oldIdPilotoOfControlCambioNeumaticoListControlCambioNeumatico);
                }
            }
            for (Despinches despinchesListDespinches : pilotos.getDespinchesList()) {
                Pilotos oldIdPilotosOfDespinchesListDespinches = despinchesListDespinches.getIdPilotos();
                despinchesListDespinches.setIdPilotos(pilotos);
                despinchesListDespinches = em.merge(despinchesListDespinches);
                if (oldIdPilotosOfDespinchesListDespinches != null) {
                    oldIdPilotosOfDespinchesListDespinches.getDespinchesList().remove(despinchesListDespinches);
                    oldIdPilotosOfDespinchesListDespinches = em.merge(oldIdPilotosOfDespinchesListDespinches);
                }
            }
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void edit(Pilotos pilotos) throws IllegalOrphanException, NonexistentEntityException, Exception {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Pilotos persistentPilotos = em.find(Pilotos.class, pilotos.getId());
            Usuarios idUsuarioOld = persistentPilotos.getIdUsuario();
            Usuarios idUsuarioNew = pilotos.getIdUsuario();
            List<InspeccionEquipo> inspeccionEquipoListOld = persistentPilotos.getInspeccionEquipoList();
            List<InspeccionEquipo> inspeccionEquipoListNew = pilotos.getInspeccionEquipoList();
            List<InspeccionEquipo> inspeccionEquipoList1Old = persistentPilotos.getInspeccionEquipoList1();
            List<InspeccionEquipo> inspeccionEquipoList1New = pilotos.getInspeccionEquipoList1();
            List<Alineaciones> alineacionesListOld = persistentPilotos.getAlineacionesList();
            List<Alineaciones> alineacionesListNew = pilotos.getAlineacionesList();
            List<ControlCambioNeumatico> controlCambioNeumaticoListOld = persistentPilotos.getControlCambioNeumaticoList();
            List<ControlCambioNeumatico> controlCambioNeumaticoListNew = pilotos.getControlCambioNeumaticoList();
            List<Despinches> despinchesListOld = persistentPilotos.getDespinchesList();
            List<Despinches> despinchesListNew = pilotos.getDespinchesList();
            List<String> illegalOrphanMessages = null;
            for (InspeccionEquipo inspeccionEquipoListOldInspeccionEquipo : inspeccionEquipoListOld) {
                if (!inspeccionEquipoListNew.contains(inspeccionEquipoListOldInspeccionEquipo)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain InspeccionEquipo " + inspeccionEquipoListOldInspeccionEquipo + " since its idPilotoSalida field is not nullable.");
                }
            }
            for (Alineaciones alineacionesListOldAlineaciones : alineacionesListOld) {
                if (!alineacionesListNew.contains(alineacionesListOldAlineaciones)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain Alineaciones " + alineacionesListOldAlineaciones + " since its idPilotos field is not nullable.");
                }
            }
            for (ControlCambioNeumatico controlCambioNeumaticoListOldControlCambioNeumatico : controlCambioNeumaticoListOld) {
                if (!controlCambioNeumaticoListNew.contains(controlCambioNeumaticoListOldControlCambioNeumatico)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain ControlCambioNeumatico " + controlCambioNeumaticoListOldControlCambioNeumatico + " since its idPiloto field is not nullable.");
                }
            }
            for (Despinches despinchesListOldDespinches : despinchesListOld) {
                if (!despinchesListNew.contains(despinchesListOldDespinches)) {
                    if (illegalOrphanMessages == null) {
                        illegalOrphanMessages = new ArrayList<String>();
                    }
                    illegalOrphanMessages.add("You must retain Despinches " + despinchesListOldDespinches + " since its idPilotos field is not nullable.");
                }
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            if (idUsuarioNew != null) {
                idUsuarioNew = em.getReference(idUsuarioNew.getClass(), idUsuarioNew.getId());
                pilotos.setIdUsuario(idUsuarioNew);
            }
            List<InspeccionEquipo> attachedInspeccionEquipoListNew = new ArrayList<InspeccionEquipo>();
            for (InspeccionEquipo inspeccionEquipoListNewInspeccionEquipoToAttach : inspeccionEquipoListNew) {
                inspeccionEquipoListNewInspeccionEquipoToAttach = em.getReference(inspeccionEquipoListNewInspeccionEquipoToAttach.getClass(), inspeccionEquipoListNewInspeccionEquipoToAttach.getId());
                attachedInspeccionEquipoListNew.add(inspeccionEquipoListNewInspeccionEquipoToAttach);
            }
            inspeccionEquipoListNew = attachedInspeccionEquipoListNew;
            pilotos.setInspeccionEquipoList(inspeccionEquipoListNew);
            List<InspeccionEquipo> attachedInspeccionEquipoList1New = new ArrayList<InspeccionEquipo>();
            for (InspeccionEquipo inspeccionEquipoList1NewInspeccionEquipoToAttach : inspeccionEquipoList1New) {
                inspeccionEquipoList1NewInspeccionEquipoToAttach = em.getReference(inspeccionEquipoList1NewInspeccionEquipoToAttach.getClass(), inspeccionEquipoList1NewInspeccionEquipoToAttach.getId());
                attachedInspeccionEquipoList1New.add(inspeccionEquipoList1NewInspeccionEquipoToAttach);
            }
            inspeccionEquipoList1New = attachedInspeccionEquipoList1New;
            pilotos.setInspeccionEquipoList1(inspeccionEquipoList1New);
            List<Alineaciones> attachedAlineacionesListNew = new ArrayList<Alineaciones>();
            for (Alineaciones alineacionesListNewAlineacionesToAttach : alineacionesListNew) {
                alineacionesListNewAlineacionesToAttach = em.getReference(alineacionesListNewAlineacionesToAttach.getClass(), alineacionesListNewAlineacionesToAttach.getId());
                attachedAlineacionesListNew.add(alineacionesListNewAlineacionesToAttach);
            }
            alineacionesListNew = attachedAlineacionesListNew;
            pilotos.setAlineacionesList(alineacionesListNew);
            List<ControlCambioNeumatico> attachedControlCambioNeumaticoListNew = new ArrayList<ControlCambioNeumatico>();
            for (ControlCambioNeumatico controlCambioNeumaticoListNewControlCambioNeumaticoToAttach : controlCambioNeumaticoListNew) {
                controlCambioNeumaticoListNewControlCambioNeumaticoToAttach = em.getReference(controlCambioNeumaticoListNewControlCambioNeumaticoToAttach.getClass(), controlCambioNeumaticoListNewControlCambioNeumaticoToAttach.getId());
                attachedControlCambioNeumaticoListNew.add(controlCambioNeumaticoListNewControlCambioNeumaticoToAttach);
            }
            controlCambioNeumaticoListNew = attachedControlCambioNeumaticoListNew;
            pilotos.setControlCambioNeumaticoList(controlCambioNeumaticoListNew);
            List<Despinches> attachedDespinchesListNew = new ArrayList<Despinches>();
            for (Despinches despinchesListNewDespinchesToAttach : despinchesListNew) {
                despinchesListNewDespinchesToAttach = em.getReference(despinchesListNewDespinchesToAttach.getClass(), despinchesListNewDespinchesToAttach.getId());
                attachedDespinchesListNew.add(despinchesListNewDespinchesToAttach);
            }
            despinchesListNew = attachedDespinchesListNew;
            pilotos.setDespinchesList(despinchesListNew);
            pilotos = em.merge(pilotos);
            if (idUsuarioOld != null && !idUsuarioOld.equals(idUsuarioNew)) {
                idUsuarioOld.getPilotosList().remove(pilotos);
                idUsuarioOld = em.merge(idUsuarioOld);
            }
            if (idUsuarioNew != null && !idUsuarioNew.equals(idUsuarioOld)) {
                idUsuarioNew.getPilotosList().add(pilotos);
                idUsuarioNew = em.merge(idUsuarioNew);
            }
            for (InspeccionEquipo inspeccionEquipoListNewInspeccionEquipo : inspeccionEquipoListNew) {
                if (!inspeccionEquipoListOld.contains(inspeccionEquipoListNewInspeccionEquipo)) {
                    Pilotos oldIdPilotoSalidaOfInspeccionEquipoListNewInspeccionEquipo = inspeccionEquipoListNewInspeccionEquipo.getIdPilotoSalida();
                    inspeccionEquipoListNewInspeccionEquipo.setIdPilotoSalida(pilotos);
                    inspeccionEquipoListNewInspeccionEquipo = em.merge(inspeccionEquipoListNewInspeccionEquipo);
                    if (oldIdPilotoSalidaOfInspeccionEquipoListNewInspeccionEquipo != null && !oldIdPilotoSalidaOfInspeccionEquipoListNewInspeccionEquipo.equals(pilotos)) {
                        oldIdPilotoSalidaOfInspeccionEquipoListNewInspeccionEquipo.getInspeccionEquipoList().remove(inspeccionEquipoListNewInspeccionEquipo);
                        oldIdPilotoSalidaOfInspeccionEquipoListNewInspeccionEquipo = em.merge(oldIdPilotoSalidaOfInspeccionEquipoListNewInspeccionEquipo);
                    }
                }
            }
            for (InspeccionEquipo inspeccionEquipoList1OldInspeccionEquipo : inspeccionEquipoList1Old) {
                if (!inspeccionEquipoList1New.contains(inspeccionEquipoList1OldInspeccionEquipo)) {
                    inspeccionEquipoList1OldInspeccionEquipo.setIdPilotoEntrada(null);
                    inspeccionEquipoList1OldInspeccionEquipo = em.merge(inspeccionEquipoList1OldInspeccionEquipo);
                }
            }
            for (InspeccionEquipo inspeccionEquipoList1NewInspeccionEquipo : inspeccionEquipoList1New) {
                if (!inspeccionEquipoList1Old.contains(inspeccionEquipoList1NewInspeccionEquipo)) {
                    Pilotos oldIdPilotoEntradaOfInspeccionEquipoList1NewInspeccionEquipo = inspeccionEquipoList1NewInspeccionEquipo.getIdPilotoEntrada();
                    inspeccionEquipoList1NewInspeccionEquipo.setIdPilotoEntrada(pilotos);
                    inspeccionEquipoList1NewInspeccionEquipo = em.merge(inspeccionEquipoList1NewInspeccionEquipo);
                    if (oldIdPilotoEntradaOfInspeccionEquipoList1NewInspeccionEquipo != null && !oldIdPilotoEntradaOfInspeccionEquipoList1NewInspeccionEquipo.equals(pilotos)) {
                        oldIdPilotoEntradaOfInspeccionEquipoList1NewInspeccionEquipo.getInspeccionEquipoList1().remove(inspeccionEquipoList1NewInspeccionEquipo);
                        oldIdPilotoEntradaOfInspeccionEquipoList1NewInspeccionEquipo = em.merge(oldIdPilotoEntradaOfInspeccionEquipoList1NewInspeccionEquipo);
                    }
                }
            }
            for (Alineaciones alineacionesListNewAlineaciones : alineacionesListNew) {
                if (!alineacionesListOld.contains(alineacionesListNewAlineaciones)) {
                    Pilotos oldIdPilotosOfAlineacionesListNewAlineaciones = alineacionesListNewAlineaciones.getIdPilotos();
                    alineacionesListNewAlineaciones.setIdPilotos(pilotos);
                    alineacionesListNewAlineaciones = em.merge(alineacionesListNewAlineaciones);
                    if (oldIdPilotosOfAlineacionesListNewAlineaciones != null && !oldIdPilotosOfAlineacionesListNewAlineaciones.equals(pilotos)) {
                        oldIdPilotosOfAlineacionesListNewAlineaciones.getAlineacionesList().remove(alineacionesListNewAlineaciones);
                        oldIdPilotosOfAlineacionesListNewAlineaciones = em.merge(oldIdPilotosOfAlineacionesListNewAlineaciones);
                    }
                }
            }
            for (ControlCambioNeumatico controlCambioNeumaticoListNewControlCambioNeumatico : controlCambioNeumaticoListNew) {
                if (!controlCambioNeumaticoListOld.contains(controlCambioNeumaticoListNewControlCambioNeumatico)) {
                    Pilotos oldIdPilotoOfControlCambioNeumaticoListNewControlCambioNeumatico = controlCambioNeumaticoListNewControlCambioNeumatico.getIdPiloto();
                    controlCambioNeumaticoListNewControlCambioNeumatico.setIdPiloto(pilotos);
                    controlCambioNeumaticoListNewControlCambioNeumatico = em.merge(controlCambioNeumaticoListNewControlCambioNeumatico);
                    if (oldIdPilotoOfControlCambioNeumaticoListNewControlCambioNeumatico != null && !oldIdPilotoOfControlCambioNeumaticoListNewControlCambioNeumatico.equals(pilotos)) {
                        oldIdPilotoOfControlCambioNeumaticoListNewControlCambioNeumatico.getControlCambioNeumaticoList().remove(controlCambioNeumaticoListNewControlCambioNeumatico);
                        oldIdPilotoOfControlCambioNeumaticoListNewControlCambioNeumatico = em.merge(oldIdPilotoOfControlCambioNeumaticoListNewControlCambioNeumatico);
                    }
                }
            }
            for (Despinches despinchesListNewDespinches : despinchesListNew) {
                if (!despinchesListOld.contains(despinchesListNewDespinches)) {
                    Pilotos oldIdPilotosOfDespinchesListNewDespinches = despinchesListNewDespinches.getIdPilotos();
                    despinchesListNewDespinches.setIdPilotos(pilotos);
                    despinchesListNewDespinches = em.merge(despinchesListNewDespinches);
                    if (oldIdPilotosOfDespinchesListNewDespinches != null && !oldIdPilotosOfDespinchesListNewDespinches.equals(pilotos)) {
                        oldIdPilotosOfDespinchesListNewDespinches.getDespinchesList().remove(despinchesListNewDespinches);
                        oldIdPilotosOfDespinchesListNewDespinches = em.merge(oldIdPilotosOfDespinchesListNewDespinches);
                    }
                }
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            String msg = ex.getLocalizedMessage();
            if (msg == null || msg.length() == 0) {
                Integer id = pilotos.getId();
                if (findPilotos(id) == null) {
                    throw new NonexistentEntityException("The pilotos with id " + id + " no longer exists.");
                }
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void destroy(Integer id) throws IllegalOrphanException, NonexistentEntityException {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Pilotos pilotos;
            try {
                pilotos = em.getReference(Pilotos.class, id);
                pilotos.getId();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The pilotos with id " + id + " no longer exists.", enfe);
            }
            List<String> illegalOrphanMessages = null;
            List<InspeccionEquipo> inspeccionEquipoListOrphanCheck = pilotos.getInspeccionEquipoList();
            for (InspeccionEquipo inspeccionEquipoListOrphanCheckInspeccionEquipo : inspeccionEquipoListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Pilotos (" + pilotos + ") cannot be destroyed since the InspeccionEquipo " + inspeccionEquipoListOrphanCheckInspeccionEquipo + " in its inspeccionEquipoList field has a non-nullable idPilotoSalida field.");
            }
            List<Alineaciones> alineacionesListOrphanCheck = pilotos.getAlineacionesList();
            for (Alineaciones alineacionesListOrphanCheckAlineaciones : alineacionesListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Pilotos (" + pilotos + ") cannot be destroyed since the Alineaciones " + alineacionesListOrphanCheckAlineaciones + " in its alineacionesList field has a non-nullable idPilotos field.");
            }
            List<ControlCambioNeumatico> controlCambioNeumaticoListOrphanCheck = pilotos.getControlCambioNeumaticoList();
            for (ControlCambioNeumatico controlCambioNeumaticoListOrphanCheckControlCambioNeumatico : controlCambioNeumaticoListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Pilotos (" + pilotos + ") cannot be destroyed since the ControlCambioNeumatico " + controlCambioNeumaticoListOrphanCheckControlCambioNeumatico + " in its controlCambioNeumaticoList field has a non-nullable idPiloto field.");
            }
            List<Despinches> despinchesListOrphanCheck = pilotos.getDespinchesList();
            for (Despinches despinchesListOrphanCheckDespinches : despinchesListOrphanCheck) {
                if (illegalOrphanMessages == null) {
                    illegalOrphanMessages = new ArrayList<String>();
                }
                illegalOrphanMessages.add("This Pilotos (" + pilotos + ") cannot be destroyed since the Despinches " + despinchesListOrphanCheckDespinches + " in its despinchesList field has a non-nullable idPilotos field.");
            }
            if (illegalOrphanMessages != null) {
                throw new IllegalOrphanException(illegalOrphanMessages);
            }
            Usuarios idUsuario = pilotos.getIdUsuario();
            if (idUsuario != null) {
                idUsuario.getPilotosList().remove(pilotos);
                idUsuario = em.merge(idUsuario);
            }
            List<InspeccionEquipo> inspeccionEquipoList1 = pilotos.getInspeccionEquipoList1();
            for (InspeccionEquipo inspeccionEquipoList1InspeccionEquipo : inspeccionEquipoList1) {
                inspeccionEquipoList1InspeccionEquipo.setIdPilotoEntrada(null);
                inspeccionEquipoList1InspeccionEquipo = em.merge(inspeccionEquipoList1InspeccionEquipo);
            }
            em.remove(pilotos);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public List<Pilotos> findPilotosEntities() {
        return findPilotosEntities(true, -1, -1);
    }

    public List<Pilotos> findPilotosEntities(int maxResults, int firstResult) {
        return findPilotosEntities(false, maxResults, firstResult);
    }

    private List<Pilotos> findPilotosEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            Query q = em.createQuery("select object(o) from Pilotos as o");
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    public Pilotos findPilotos(Integer id) {
        EntityManager em = getEntityManager();
        try {
            return em.find(Pilotos.class, id);
        } finally {
            em.close();
        }
    }

    public int getPilotosCount() {
        EntityManager em = getEntityManager();
        try {
            Query q = em.createQuery("select count(o) from Pilotos as o");
            return ((Long) q.getSingleResult()).intValue();
        } finally {
            em.close();
        }
    }
    
}
